﻿''' <summary>
''' Die Fliegende Festung des Bösen.=D
''' Fürchtet euch.
''' </summary>
''' <remarks></remarks>
<Serializable()> Public Class GebäudeFliegendeFestung
    Inherits ObjektGebäude
    Public Sub New(ByVal neuSpieler As Integer, ByVal neuX As Integer, ByVal neuY As Integer, ByVal Spielfeld As ObjektSpielfeld)
        MyBase.New("FLIEGENDEFESTUNG", neuSpieler, neuX, neuY, ObjektSpielfeld.Luftschlacht)
        GebäudeLaden(True)
        getBildID(Spielfeld)
    End Sub
    Public Sub New(ByVal neuSpieler As Integer, ByVal neuLeben As Integer, ByVal neuBesetzungszahl As Integer, ByVal neuX As Integer, ByVal neuY As Integer, ByVal Feuerzahl As Integer, ByVal Spielfeld As ObjektSpielfeld)
        MyBase.New("FLIEGENDEFESTUNG", neuSpieler, neuLeben, neuBesetzungszahl, neuX, neuY, Feuerzahl, ObjektSpielfeld.Luftschlacht)
        GebäudeLaden(False)
        getBildID(Spielfeld)
    End Sub
    Public Sub New()
        MyBase.New("", -1, -1, -1, ObjektSpielfeld.Luftschlacht)
        Gebäudename = "Fliegende Festung"
        getFonds = False
        Deckung = 0
        Bestzunge = -1
        Schaden = 5
        Reichweite = 3
        Rechteck.Height = Hauptmenü.Feldbreite * 4
        Rechteck.Width = Hauptmenü.Feldbreite * 4
        Angriff = Angriffe.KugelKreis
        Select Case My.Settings.CommanderWarsGameMoodus
            Case CommanderWarsGameModi.CommanderWars2, CommanderWarsGameModi.CommanderWars
                Leben = 2000
            Case Else
                Leben = -1
        End Select
        Feuerbereite = 1
        Feuerladung = 1
        RotationsZenturm = New Point(Hauptmenü.Feldbreite * 3 / 2, Hauptmenü.Feldbreite * 5 / 2)
        WirdZu = "LUFT"
        Array.Resize(Variablen, 0)
        Verweisgebäude = New Integer(,) {{-1, -2}, {0, -2}, {1, -2}, {2, -2}, {-1, -1}, {0, -1}, {1, -1}, {2, -1}, {-1, 0}, {1, 0}, {2, 0}, {-1, 1}, {0, 1}, {1, 1}, {2, 1}, {-1, 2}, {-2, 1}, {-2, -2}, {-1, -3}, {2, -3}, {3, -2}, {3, 1}, {2, 2}}
    End Sub

    Private Sub GebäudeLaden(ByVal MitMiniGeschützen As Boolean)
        Gebäudename = "Fliegende Festung"
        getFonds = False
        Deckung = 0
        Bestzunge = -1
        Schaden = 5
        Reichweite = 3
        Rechteck.Height = Hauptmenü.Feldbreite * 4
        Rechteck.Width = Hauptmenü.Feldbreite * 4
        Angriff = Angriffe.KugelKreis
        Select Case My.Settings.CommanderWarsGameMoodus
            Case CommanderWarsGameModi.CommanderWars2, CommanderWarsGameModi.CommanderWars
                Leben = 2000
            Case Else
                Leben = -1
        End Select
        Feuerbereite = 1
        Feuerladung = 1
        RotationsZenturm = New Point(Hauptmenü.Feldbreite * 3 / 2, Hauptmenü.Feldbreite * 5 / 2)
        WirdZu = "LUFT"
        Array.Resize(Variablen, 0)
        Verweisgebäude = New Integer(,) {{-1, -2}, {0, -2}, {1, -2}, {2, -2}, {-1, -1}, {0, -1}, {1, -1}, {2, -1}, {-1, 0}, {1, 0}, {2, 0}, {-1, 1}, {0, 1}, {1, 1}, {2, 1}}
        For I = 0 To Verweisgebäude.GetLength(0) - 1
            If Not Objektverwalter.Spielfeld Is Nothing Then
                Objektverwalter.Spielfeld.Landschaften(Rechteck.X + Verweisgebäude(I, 0), Rechteck.Y + Verweisgebäude(I, 1), ObjektSpielfeld.Luftschlacht).Gebäude = New GebäudeVerweis(Spieler, Rechteck.X, Rechteck.Y, ObjektSpielfeld.Luftschlacht)
            End If
        Next
        If MitMiniGeschützen = True Then
            'Wir erstellen die Minigeschütze der Festung
            Objektverwalter.Spielfeld.Landschaften(Rechteck.X + 2, Rechteck.Y + 2, ObjektSpielfeld.Luftschlacht).Gebäude = New GebäudeFliegendesMinigeschütz_S(Spieler, Rechteck.X + 2, Rechteck.Y + 2, Nothing)
            Objektverwalter.Spielfeld.Landschaften(Rechteck.X - 1, Rechteck.Y + 2, ObjektSpielfeld.Luftschlacht).Gebäude = New GebäudeFliegendesMinigeschütz_S(Spieler, Rechteck.X - 1, Rechteck.Y + 2, Nothing)
            Objektverwalter.Spielfeld.Landschaften(Rechteck.X - 2, Rechteck.Y + 1, ObjektSpielfeld.Luftschlacht).Gebäude = New GebäudeFliegendesMinigeschütz_W(Spieler, Rechteck.X - 2, Rechteck.Y + 1, Nothing)
            Objektverwalter.Spielfeld.Landschaften(Rechteck.X - 2, Rechteck.Y - 2, ObjektSpielfeld.Luftschlacht).Gebäude = New GebäudeFliegendesMinigeschütz_W(Spieler, Rechteck.X - 2, Rechteck.Y - 2, Nothing)
            Objektverwalter.Spielfeld.Landschaften(Rechteck.X - 1, Rechteck.Y - 3, ObjektSpielfeld.Luftschlacht).Gebäude = New GebäudeFliegendesMinigeschütz_N(Spieler, Rechteck.X - 1, Rechteck.Y - 3, Nothing)
            Objektverwalter.Spielfeld.Landschaften(Rechteck.X + 2, Rechteck.Y - 3, ObjektSpielfeld.Luftschlacht).Gebäude = New GebäudeFliegendesMinigeschütz_N(Spieler, Rechteck.X + 2, Rechteck.Y - 3, Nothing)
            Objektverwalter.Spielfeld.Landschaften(Rechteck.X + 3, Rechteck.Y - 2, ObjektSpielfeld.Luftschlacht).Gebäude = New GebäudeFliegendesMinigeschütz_O(Spieler, Rechteck.X + 3, Rechteck.Y - 2, Nothing)
            Objektverwalter.Spielfeld.Landschaften(Rechteck.X + 3, Rechteck.Y + 1, ObjektSpielfeld.Luftschlacht).Gebäude = New GebäudeFliegendesMinigeschütz_O(Spieler, Rechteck.X + 3, Rechteck.Y + 1, Nothing)
        End If
    End Sub
    Public Overrides Function GetMaxLeben() As Integer
        Select Case My.Settings.CommanderWarsGameMoodus
            Case CommanderWarsGameModi.CommanderWars2, CommanderWarsGameModi.CommanderWars
                If KP > 2000 Then Return KP
                Return 2000
            Case Else
                If KP > -1 Then Return KP
                Return -1
        End Select
    End Function
    Public Overrides Sub Feuer(ByVal X As Integer, ByVal Y As Integer)
        GenerateNetzBefehlGebäudeFeuer(X, Y)
        KugelFeuer()
        ObjektLadeklasse.SiloExplosion(Reichweite, "LAND", Rechteck.X, Rechteck.Y, ObjektSpielfeld.Bodenschlacht)
        Feuerbereit = -1
        Objektverwalter.Spielfeld.Regeln.CheckSieg()
        Dim M As ObjektSpielMenü = Objektverwalter.Menü
        M.Spielmodus = ObjektSpielMenü.Spielmodi.Nichts
    End Sub
    Public Overrides Sub FeuerradiusAnzeigen()
        KreisAnzeigen("Rot")
        MusikEngine.LoadWav(My.Settings.Resourcenpfad + "Sound\Einheitausgewählt.wav", False)
        Dim M As ObjektSpielMenü = Objektverwalter.Menü
        M.Spielmodus = ObjektSpielMenü.Spielmodi.FeuerradiusAnzeigen
    End Sub
    Public Overrides Sub DOSpielFrame()
        Feuerbereit = 1
    End Sub
    Public Overrides Function GetLandschaftsuntergrund() As String()
        Return New String() {"LUFT"}
    End Function
    Public Overrides Function GetAngriffsFelder() As System.Drawing.Point()
        Return GetKreisFelder()
    End Function

End Class
